// createStore:生成store实例对象  new store()
import { createStore } from 'vuex'
import user from './modules/user.js'
import cart from './modules/cart.js'
import category from './modules/category.js'
// 持久化插件
import createPersistedState from 'vuex-persistedstate'
// import * as Cookies from 'js-cookie'

export default createStore({
  state: {
  },
  mutations: {
  },
  actions: {
  },
  // 模块化
  modules: {
    user,
    cart,
    category
  },
  /* token持久化:
  原因:
  1.vuex磁盘,刷新数据消失;
  本地存储,刷新数据不会消失, 直接将刷新的数据更新到vuex中;
  vuex的数据更改也会直接更新到本地
  2.兼容vue2和vue3的
  注意用法:安装插件->导入->plugins:[方法调用({key:'', paths:['模块一','模块二','...']})]
  */
  plugins: [
    // vuex-persistedstate 持久化操作,默认是存储在vuex中
    createPersistedState({
      // 自定义key名
      key: 'erabbit-client-pc-store',
      // 存储对象-->与modules中的模块名一致
      paths: ['user', 'cart']
      // 将vuex的数据存储到cookie中--->主要存储token为主
      /* storage: {
        getItem: key => Cookies.get(key),
        setItem: (key, value) => Cookies.set(key, value, { expires: 7 }),
        removeItem: key => Cookies.remove(key)
      } */
    })
  ]
})
